import {
View,
StyleSheet,
KeyboardAvoidingView,
ScrollView,
} from "react-native";
import { Text } from "@/components/ui/Text";
import { useState, useEffect } from "react";
import { router, useLocalSearchParams, Stack } from "expo-router";
import { Card } from "@/components/ui/Cards";
import { TextArea } from "@/components/ui/Input";
import { Button } from "@/components/ui/Button";
import { Spacing, Typography, Colors, BorderRadius } from "@/constants/theme";
import { Ionicons } from "@expo/vector-icons";
import { DatePickerField } from "@/components/ui/DatePickerField";
import { ScaleSlider } from "@/components/ui/ScaleSlider";
import { useSleepRecord, useUpdateSleepRecord } from "@/hooks";
import { parseDateOnly } from "@/lib/utils/time";
import { ActivityIndicator, View as ActivityView } from "react-native";
export default function EditSleepRecord() {
const { id } = useLocalSearchParams<{ id: string }>();
const { data: sleepRecord, isLoading } = useSleepRecord(id);
const updateSleepRecord = useUpdateSleepRecord();
const [date, setDate] = useState(new Date());
const [annotations, setAnnotations] = useState("");
const [average, setAverage] = useState(7.5);
useEffect(() => {
if (sleepRecord) {
setDate(parseDateOnly(sleepRecord.date));
setAnnotations(sleepRecord.annotations || "");
setAverage(sleepRecord.average);
}
}, [sleepRecord]);
const formatValue = (value: number): string => {
return String(value).replaceAll(".", ",");
};
const save = async () => {
const data = {
date,
annotations,
average,
};
await updateSleepRecord.mutateAsync({ id: String(id), payload: data });
router.back();
};
if (isLoading) {
return (
);
}
return (
Editar Sono
Atualize os dados do sono
Você pode editar este registro nos primeiros 5 minutos após a
criação.
);
}
const styles = StyleSheet.create({
container: {
gap: 24,
paddingHorizontal: Spacing.containerPadding,
paddingVertical: Spacing.sectionGap,
},
mainCard: {
padding: Spacing.cardGap,
},
header: {},
headerIcon: {
paddingVertical: 15,
paddingHorizontal: 14,
width: 48,
borderRadius: BorderRadius.md,
},
innerHeaderWrapper: {
flex: 1,
flexDirection: "row",
alignItems: "center",
},
headerTitleSubtitle: {
marginLeft: 10,
},
headerTitle: {
...Typography.headlineMd,
},
headerSubtitle: {
...Typography.bodyMd,
color: Colors.light.textSecondary,
},
description: {
...Typography.bodyMd,
color: Colors.light.textSecondary,
marginTop: 20,
},
keyboardView: {
flex: 1,
},
centered: {
flex: 1,
justifyContent: "center",
alignItems: "center",
},
});